/**
 * 
 */
package co.com.ebusiness.trader.model;

import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

import org.apache.tapestry5.beaneditor.NonVisual;
import org.apache.tapestry5.beaneditor.Validate;

import co.com.ebusiness.trader.core.model.Empresa;
import co.com.ebusiness.trader.seguridad.model.Usuario;
import co.com.ebusiness.trader.utilidades.model.TipoConsignacion;

/**
 * @author Luis Agudelo
 *
 */
@Entity
@Table(name = "trd_consignaciones")
public class Consignacion {
	
	private int idCons;
	private String concepto;
	private double valor;
	private TipoConsignacion tipoConsignacion;
	private Date fecha;
	private Empresa empresa;
	private Usuario usuario;
	
	
	/**
	 * @return the idCons
	 */
	 @Id
     @GeneratedValue
     @Column(name = "idCons")
     @NonVisual
	public int getIdCons() {
		return idCons;
	}
	/**
	 * @param idCons the idCons to set
	 */
	public void setIdCons(int idCons) {
		this.idCons = idCons;
	}
	/**
	 * @return the concepto
	 */
	@Validate("required")
	public String getConcepto() {
		return concepto;
	}
	/**
	 * @param concepto the concepto to set
	 */
	public void setConcepto(String concepto) {
		this.concepto = concepto;
	}
	/**
	 * @return the valor
	 */
	@Validate("required")
	public double getValor() {
		return valor;
	}
	/**
	 * @param valor the valor to set
	 */
	public void setValor(double valor) {
		this.valor = valor;
	}
	/**
	 * @return the tipoConsignacion
	 */
	@Column(name = "tipo", nullable = false, length = 10)
    @Validate("required")
    @Enumerated(EnumType.STRING)
	public TipoConsignacion getTipoConsignacion() {
		return tipoConsignacion;
	}
	/**
	 * @param tipoConsignacion the tipoConsignacion to set
	 */
	public void setTipoConsignacion(TipoConsignacion tipoConsignacion) {
		this.tipoConsignacion = tipoConsignacion;
	}
	/**
	 * @return the fecha
	 */
	@Validate("required")
	public Date getFecha() {
		return fecha;
	}
	/**
	 * @param fecha the fecha to set
	 */
	public void setFecha(Date fecha) {
		this.fecha = fecha;
	}
	/**
	 * @return the empresa
	 */
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="idEmp")
	@NonVisual
	public Empresa getEmpresa() {
		return empresa;
	}

	/**
	 * @param empresa the empresa to set
	 */
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	
	/**
	 * @return the usuario
	 */
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="id_user")
	public Usuario getUsuario() {
		return usuario;
	}
	/**
	 * @param usuario the usuario to set
	 */
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	
}
